﻿CREATE PROCEDURE [dbo].[CatalogInsert]
(
	@ParentId int,
	@Name varchar(100),
	@MarkUp float, --аптечная наценка по умолчанию
	@Note varchar(250),
	@MD datetime,
	@MW varchar(50)
)
AS
DECLARE @strMsg nvarchar(500), @intRet int, @intErrCode int
DECLARE @intNextId int
SET NOCOUNT ON

IF (@Name Is Null)
BEGIN
	SELECT @intErrCode = 1, @strMsg = 'Неправильные параметры в вызове процедуры ' + Object_Name(@@Procid) + ' !'
	RAISERROR (@strMsg, 11, @intErrCode)
	RETURN @intErrCode
END

IF (ltrim(@Name) = '') 
BEGIN
	SELECT @intErrCode = 2, @strMsg = 'Незаполнено наименование!'
	RAISERROR (@strMsg, 11, @intErrCode)
	RETURN @intErrCode
END

IF @ParentId Is Not Null
BEGIN
	IF NOT EXISTS( SELECT Id FROM CO.[Catalog] WHERE Id = @ParentId AND ToDelete = 0)
	BEGIN
		SELECT @intErrCode = 3, 
		@strMsg = 'Отсутствует группа с идентификатором ' + cast(@ParentId as varchar(20)) + '!'
		RAISERROR (@strMsg, 11, @intErrCode)
		RETURN @intErrCode
	END
END

IF NOT EXISTS (SELECT DepartmentId FROM PR.DepartmentOptions WHERE DepartmentId = 0 ) 
BEGIN
	SELECT @intErrCode = 4, @strMsg = 'Изменять данные справочников можно только в офисе!'
	RAISERROR (@strMsg, 11, @intErrCode)
	RETURN @intErrCode
END

EXEC [dbo].[ProcessStatistic] @Note OUTPUT, @MD OUTPUT, @MW OUTPUT
--получение значения идентификатора
EXEC @intRet = dbo.GetNextCounterFor 'Common', @intNextId OUTPUT
IF @intRet <> 0 RETURN @intRet

	SET NOCOUNT OFF;
INSERT INTO [CO].[Catalog] (Id, [ParentId], MarkUp, [Name], [Note], [MD], [MW], ToDelete) 
VALUES (@intNextId, @ParentId, @Name, @MarkUp, @Note, @MD, @MW, 0);
	
SELECT Id, ParentId, Name, MarkUp, Note, MD, MW, ToDelete
FROM CO.Catalog WHERE (Id = @intNextId)
RETURN 0

